#ifndef FSM_BASE_ENTITY_H
#define FSM_BASE_ENTITY_H

struct Telegram;

//==============================================================================
// base entity for game
class BaseEntity {
public:
//---- Constructor and Destructor ----
    // no check for unique IDs, assuming unique IDs are assigned before object is constructed.
	BaseEntity(int p_ID) {
		setID(p_ID);
	}



	virtual ~BaseEntity() {}


// ---- Public Functions ----
	// returns the ID of the entity
	int getID() const { return m_ID; }
    
    
    
// ---- Pure Virtual Functions ----     
    // all entity implement an update function
	virtual void update() = 0;
    
	virtual bool handleMessage(const Telegram&) = 0;



private:
// ---- Private Variables ----
	// ID of entity, unique for each one created
	int m_ID;
	
    

//---- Helper Functions ----
    void setID(int p_ID) {
		m_ID = p_ID;
    }
};
//==============================================================================

#endif